Modular apparatus and system for reconfigurable user inputs

ABSTRACT

The present disclosure relates to a modular apparatus and system for providing customized, reconfigurable user inputs. In an aspect, there is provided a modular apparatus comprising a plurality of reconfigurable Input Modules with different types of user inputs, such as buttons, sliders, knobs, joysticks, trackballs, touch pads, touch screens, and other types of user interfaces. The Input Modules may be physically interconnected to a Master Module which is adapted to communicate with each Input Module and to a System Controller Application running on a connected computing device. The Input Modules are reconfigurable into any number of different physical layouts. The Master Module determines the physical layout of the connected Input Modules, and communicates the layout to the System Controller Application. The function of each Input Module is then programmed via the System Controller Application and the Master Module for performing specific functions in a compatible computer application.

FIELD OF THE INVENTION

The present disclosure relates generally to a modular apparatus andsystem for providing reconfigurable user inputs.

BACKGROUND

Computers are vital components in carrying out many important tasks.There is a broad landscape of computer applications and workflows thatcomputer users utilize to perform a variety of tasks. In spite of thisvariety, interacting with a computer is still largely accomplishedthrough a “one-size-fits-all” keyboard, mouse, touch pad and touchscreen interfaces which are the de facto computer input interfaces.Operating systems and applications have been designed for the majorityof the past 30 years to work with these types of interfaces, but theycan be unsuitable or inefficient for many tasks done on a computer.Examples of such tasks include: photo editing, graphic design, videoediting, and music production. In each of these cases the user mustoften use a keyboard and mouse to interact with interfaces mimickingolder analog hardware interfaces (knobs, sliders, radio buttons, etc.),but without the tactility, precision, or ease of use of these olderinterfaces.

Consequently, what is needed is an improved apparatus and system foraddressing these limitations in existing computer input interfaces.

SUMMARY

The present disclosure relates to a modular apparatus and system forproviding customized, reconfigurable user inputs.

In an aspect, there is provided a modular apparatus comprising aplurality of reconfigurable Input Modules with different types of userinputs, such as buttons, sliders, knobs, joysticks, trackballs, touchpads, touch screens, and other types of user interfaces.

In an embodiment, the Input Modules have a common base which is suitablyshaped to allow the Input Modules to detachably interconnect with eachother. For example, the Input Modules may be generally square shaped, orof a rectangular shape which is the size of two square shaped modulesplaced together.

In alternative embodiments, it will be appreciated that the InputModules may be other shapes that may detachably interconnect, such as ahexagonal shape to form a honey-comb pattern. The Input Modules may alsobe a mix of different shapes which are selected to allow detachableinterconnection and reconfiguration.

In an embodiment, the Input Modules may physically connect usinginterconnecting magnets provided on one or more sides of the base. Thepolarity of the magnets on the one or more sides of the base may be usedto define which sides of two Input Modules can connect together, andwhich sides of two Input Modules are repelled to prevent aninterconnection along those sides. At the same time, the magnets allowtwo Input Modules to be separated if it is desired to reconfigure theInput Modules in a different configuration.

In another embodiment, the Input Modules may communicate via anelectrical interconnection made between two detachably interconnectedInput Modules. For example, the electrical interconnection may be madeby male and female interconnectors.

In a preferred embodiment, the electrical interconnection is made viaresiliently depressible pogo pins and corresponding contact pads.

In another preferred embodiment, the configuration of the Input Modulesand the type of electrical connections enable the Input Modules to behot-swappable, i.e., connected and disconnected while the device is on.

In another embodiment, at least one of the Input Modules is a MasterModule which is configured to communicate with each interconnected InputModule. The Master Module includes a processor and a memory, and iscapable of communicating with each of the interconnected Input Modules,and with an attached computing device, such as a desktop or laptopcomputer, for example. The connection between the Master Module and thecomputing device may be hardwired, or may alternatively be a wirelessconnection made by any number of different types of short distancewireless connection, such as Wi-Fi, Bluetooth, BLE or NFC, for example.

In an embodiment, the Master Module is adapted to determine the physicallayout of all interconnected Input Modules and the types ofinterconnected Input Modules, and dynamically assign addresses to eachof the interconnected Input Modules. The Master Module communicates thephysical layout and assigned addresses to System Controller Applicationexecuting on the computing device. This allows each of theinterconnected Input Modules to also communicate with and be addressableby the System Controller Application through the Master Module.

In another embodiment, the System Controller Application is adapted tointerface with one or more computer applications which require a userinput, and enables the one or more computer applications to assign acontrol function to each attached Input Module via the Master Module,and to convert user input via the Input Modules into correspondingapplication commands. For example, for a photo editing computerapplication, a plurality of Input Modules comprising buttons, dials andsliders may be interconnected with the Master Module, and each InputModule may be assigned to specific control functions such as exposure,contrast, color saturation, color balance, sharpness, noise, etc.Operating each Input Module will thus control the assigned function.

In another embodiment, the physical layout of the Input Modules isreplicated on a display of the computing device by the System ControllerApplication to allow a user to more easily assign computer applicationfunctions to each Input Device. If one or more Input Modules arereconfigured and the physical layout of the Input Modules changes, thenew configuration will be replicated on the display to reflect thechange.

Advantageously, a computer user is now able to reconfigure a pluralityof Input Modules to their own preferences, and can assign differentcomputer application functions to different types of user inputsprovided by the Input Modules in a virtually unlimited number ofconfigurations, providing great flexibility and customization.

In this respect, before explaining at least one embodiment of the systemand method of the present disclosure in detail, it is to be understoodthat the present system and method is not limited in its application tothe details of construction and to the arrangements of the componentsset forth in the following description or illustrated in the drawings.The present system and method is capable of other embodiments and ofbeing practiced and carried out in various ways. Also, it is to beunderstood that the phraseology and terminology employed herein are forthe purpose of description and should not be regarded as limiting.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a schematic block diagram of a system architecture inaccordance with an embodiment.

FIG. 2 shows two different types of Input Modules by way ofillustration.

FIG. 3 shows an illustrative example of a square shaped Input Module.

FIGS. 4A to 4F show an illustrative example of a Master Moduleinterconnected with a plurality of Input Modules.

FIGS. 5A to 5C show circuitry of various components of an illustrativeInput Module.

FIG. 6 shows a schematic flow chart of a method for detecting a newInput Module in accordance with an embodiment.

FIG. 7 shows a schematic flow chart of a method for determining the typeof data and directing the data between the Master Module and an attacheddevice.

FIG. 8 shows a schematic block diagram illustrating how a Master Modulemay logically map a layout of interconnected Input Modules.

FIG. 9 shows another illustrative example of an interconnection betweenInput Modules of different shapes and sizes.

FIG. 10 shows a schematic block diagram of a logical bus architecturefor interconnecting the Master Module to a plurality of Input Modules.

FIG. 11A shows a screen shot of various computer applications that maybe mapped.

FIG. 11B shows an illustrative screen for displaying a current physicallayout on a computer display, and for mapping the function of each InputModule using a drop down menu.

FIG. 12 shows a generic computer device which may provide an operatingenvironment for various embodiments of the system.

DETAILED DESCRIPTION

As noted above, the present disclosure relates to a modular apparatusand system for providing customized, reconfigurable user inputs.

Certain terminology as used in the present disclosure is defined asfollows:

CDC/ACM—Communications Device Class/Abstract Control Model is avendor-independent publicly documented protocol that can be used foremulating serial ports over USB.

I²C—A serial bus consisting of two lines—SCL (clock line), and SDA (dataline). These lines are open-drain (i.e. when the bus is unused, the SDAline remains at logic High). The following diagram demonstrates the I²Ctopology.

HID—USB HID (Human Interface Device)—A device class for a range ofdevices such as Keyboards, Mice, Joysticks, etc. Most modern operatingsystems can interface directly with these devices without the need forexternal software.

JSON—JavaScript Object Notation. A common human-readable scheme fordefining and transmitting attribute-value pairs.

UUID—A globally unique number that is different for every different typeof Input Module or Master Module.

Referring to FIG. 1, shown is a schematic block diagram of anillustrative system architecture in accordance with an embodiment. Asshown, a plurality of Input Modules are connected to a Master Module,which in turn is connected to various types of computer applications,such as Word Processing, Development Tools, Games, Music, andSpecialized Applications via a suitable application plug-in.

In an embodiment, a Controller Application running on a connectedcomputer device is responsible for communicating with the Master Module.The Controller Application processes the incoming layout strings andpresents the corresponding layout to the user. It also allows the userto set custom functions and operations to the Input Module actions. TheController Application also acts as an intermediary between userapplications and the Input Modules and Master Module, translating thehardware commands into user application actions.

The Controller Application allows the user to select which applicationor mode the hardware will interact with. Upon choosing a desiredapplication or mode, the app presents an interface to configure themodule functions as desired.

The Controller Application also bundles plug-ins that interface withseveral user applications and translate commands from the ControllerApplication into actions in the corresponding user application. Thismechanism enables specialized control that the user applicationsthemselves do not expose by default. These plug-ins communicate with theController Application through inter-process sockets.

The Controller Application also presents the user with default mappingsbased on the most common functions of each user application. TheController Application can also remember the functions assigned toindividual modules (through the use of the module's UUID), and restorefunctionality if the user disconnects and reconnects the module (withouthaving the user remap the functionality).

In a preferred embodiment, the modular apparatus and system comprises aplurality of reconfigurable Input Modules with different types of userinputs, such as buttons, sliders, knobs, joysticks, trackballs, touchpads, touch screens, and other types of user interfaces. Amicrocontroller circuit in each Input Module converts the input into asignal sent to the Master Module. The Input Modules may also include RGBLEDs that can illuminate as dictated by the user or as controlled by theController Application.

By way of example, FIG. 2 shows two different types of Input Modules, afirst including a Button control, and a second including a Dial.Virtually any type of user interface that may be built into a modularInput Module may be used.

The Input Modules have a common base which is suitably shaped to allowthe Input Modules to detachably interconnect with each other. Forexample, as shown in FIG. 3, the Input Modules may be generally squareshaped, or of a rectangular shape which is the size of two square shapedmodules placed together.

It will be appreciated that the Input Modules may be other shapes thatmay detachably interconnect, such as a hexagonal shape to form ahoney-comb pattern. The Input Modules may also be a mix of differentshapes which are selected to allow detachable interconnection andreconfiguration.

The Input Modules may physically connect using interconnecting magnetsprovided on one or more sides of the base, as illustrated in FIG. 2. Thepolarity of the magnets positioned on the one or more sides of the basemay be used to define which sides of two Input Modules can connecttogether, and which sides of two Input Modules are repelled to preventan interconnection along those sides. At the same time, the magnets areselected to allow the two Input Modules to be separated if it is desiredto reconfigure the Input Modules in a different configuration.

The Input Modules may communicate via an electrical interconnection madebetween two detachably interconnected Input Modules. For example, theelectrical interconnection may be made by male and femaleinterconnectors. In a preferred embodiment, as illustrated in FIG. 2,the electrical interconnection is made via resiliently depressible pogopins and corresponding contact pads. The configuration of the InputModules and the type of electrical connections enable the Input Modulesto be hot-swappable, i.e., connected and disconnected while the deviceis on.

At least one of the Input Modules is a Master Module, as illustrated inFIG. 3, which is configured to communicate with each interconnectedInput Module. The Master Module is ultimately responsible for processingall of the input states of the Input Modules, and then communicatingthis data to the user's computer. The Master Module is also tasked withkeeping track of the current layout of all the modules.

In an embodiment, the Master Module interfaces with the computer througha micro-USB port and includes a display, for example a 128×128 pixelcolour OLED screen, capable of displaying images such as the currentapplication profile, and which application is presently beingcontrolled. These features can be seen in FIG. 3.

The Master Module includes a processor, a memory, and preferably adisplay, and is capable of communicating with each of the interconnectedInput Modules. The Master Module is also configured to interconnect withan attached computing device, such as a desktop or laptop computer, forexample.

The Master Module may communicate with the computing device usingvarious protocols, for example: CDC/ACM (Communications DeviceClass/Abstract Control Model), HID (Human Interface Device), and MIDI(Musical Interface Digital Interface). The Master Module maintainscommunication over the CDC/ACM protocol, and can switch modes betweenHID, MIDI, or CDC/ACM.

The Master Module may connect to the computer via a hardwiredconnection, such as USB cable. The connection may alternatively be awireless connection made by any number of different types of shortdistance wireless connection, such as Wi-Fi, Bluetooth, BLE or NFC, forexample.

The Master Module is capable of communicating with the computer in atleast three different ways: through a custom data protocol (CDC/ACM),HID (standard keyboard/mouse/joystick protocol), and MIDI (used in musicsoftware). In the present, illustrative example, the Master Module andInput Modules communicate on a common I²C bus for data transfer, andeach module port contains distinct One-Wire Serial Interfaces used onlyfor module detection and assigning I²C addresses.

In an embodiment, the Master Module is adapted to determine the physicallayout of all interconnected Input Modules and the types ofinterconnected Input Modules, and dynamically assign addresses to eachof the interconnected Input Modules.

Interconnection

FIG. 4A to FIGS. 4A to 4F show an illustrative example of a MasterModule interconnected with a plurality of Input Modules.

More particularly, FIGS. 4A and 4B show an illustrative Master Modulehaving a screen 4 and a cable interconnection (e.g. USB) for connectionto a computing device.

FIG. 4C shows an illustrative Button Input Module having a button 9 thatmay be depressed to perform a function. As shown, the button moduleincludes magnets 11, 13 which are arranged in a polarity to allowconnection of the Button Input Module to the Master Module or to anothertype of Input Module. While magnets are shown as the fastening devicesin this illustrative example, it will be appreciated that another typeof removable fastener may also be used.

A male port 10 (e.g. pogo pins) provides connection to a female port(e.g. contact pads) to provide an electrical interconnection betweenattached modules. While pogo pins and contact pads are illustrated, itwill be appreciated that any number of different connectors may also beused.

FIG. 4D is an illustrative Dial Input Module having a dial 14 that maybe operated to perform a function. The Dial Input Module similarlyincludes fastening devices and electrical interconnection points toallow the Dial Input Module to be interconnected to the Master Module,the Button Input Module, or to another type of Input Module.

FIGS. 4E and 4F depict one possible configuration of modules which maybe arranged relative to each other as shown in FIG. 4E, theninterconnected as shown in FIG. 4F.

Input Module Logic

Now referring to FIG. 5, shown is a schematic flow chart of anillustrative Input Module process in accordance with an embodiment.

By way of illustration, FIG. 5 shows circuitry within an Input Module.The Input Module circuit is responsible for converting analog signalsfrom the input peripherals into digital data and communicating this datato a Power Module. The Input Modules are also responsible for detectingwhen neighbouring Input Modules have been connected, and assigning I²Caddresses to them.

The Input Module circuit consists of a microcontroller, peripheral inputports, male module pogo pins, and several female module pads. Thecircuit also consists of special circuitry to isolate the I²C bus fromthe microcontroller when the circuit is unpowered to prevent glitches onthe bus during module connection/disconnection.

The microcontroller serves to process the analog input (button presses,dial turns/presses, slider position, etc.) and then send this data tothe Master Module when queried. The microcontroller also receivesdetection and assignment commands from the Master Module, whichrespectively cause the microcontroller to detect newly pluggedneighbouring modules, and assign newly plugged neighbouring modules I²Caddresses.

The bus isolation circuitry serves to prevent the I²C bus from beingpulled to logic when the module is connected. Without the circuitry,while the microcontroller is unpowered its internal protection diodewould conduct, thus dropping the voltage of the I²C lines. The n-channelenhancement mode MOSFETs Q1, Q2, and Q3 serve to isolate these lineswhile the device is unpowered.

Now referring to FIG. 6, shown is a schematic flow chart of a method fordetecting a new module plugged into an existing layout. In anembodiment, this method is performed on Input Modules, but may beperformed by both Input Modules and Master Modules.

As shown, the method begins by detecting an output presence signal on acommon One Wire line. While an acknowledgement from the One Wire line isnot received, the method loops to detect an output presence. If a Onewire acknowledgement is received, then the method proceeds to receive anI²C address on the One Wire line. The method then proceeds to initiateI²C hardware with the address.

The method then proceeds to process input peripherals, and if a staterequest is received, the method sends input state data. If no, then themethod proceeds to determine if a detect request is received. If no, themethod loops back to process an Input peripheral. If yes, the methodproceeds to determine if a module is detected.

If no new modules are detected, this is reported, and the method reportsno new module. If yes, the method proceeds to report the new moduleport, and the method then receives and assigns a new I²C address. Themethod then loops back to process an Input peripheral.

Now referring to FIG. 7, shown is a schematic flow chart of anillustrative method for automatically determining the type of connectionbetween the Master Module and a connected device. The method starts andfirst recursively determines the layout of the Input Modules, asdetailed further below.

The detected layout of the Input Modules is then sent to the computingdevice. A query module checks for input status.

Upon detection of an input, the raw input is sent over CDC/ACM. If theraw input is HID mode, the method computes keystrokes based on HIDmapping and sends to the computing device. If the raw data is MIDI mode,the method computes MIDI commands based on MIDI mapping and sends theMIDI commands to the attached MIDI device.

CDC/ACM is a custom data protocol is implemented over this communicationinterface. The module layout, input states, mappings and screen imagedata are communicated over this interface in a JSON format. Someexamples of JSON format are as follows:

Sample JSON String for Two Module Layout (Button Module Plugged intoPort 0 of Master):

{ “layout”:    {     “uuid” : “8f168”,     “id”: 0,     “type”: 0,    “children” :      [       {         “uuid” : “d6907”,         “id” :1,         “type”: 3,         “children”:            [              null,               null,               null            ]      },       null,       null      ]     },   “module_count”: 2 }Sample JSON String for Button Press

{ “input”:   [     {        “id” : 1,        “values”: [1, 0, 0, 0, 0,0, 0, 0]     }   ] }

HID is based on the user-set mapping, the Master Module outputs theappropriate Keyboard, Mouse, and Joystick commands over the standardHuman Interface Device interface.

MIDI is based on the user-set mapping, the Master Module outputs theappropriate MIDI commands. The Master Module sends an input event anytime the user performs an action with any Input Module. The MasterModule is capable of outputting MIDI commands such as Control Change andNote On/Note Off. A Control Change command is defined by a Channel,Controller Number, and Controller Value. Similarly, a Note command isdefined by a Channel, Pitch, and Velocity.

The MIDI map specifies which input module values are mapped to specificControl Change or Note sets (i.e. Channel/Controller Number combinationor Channel/Pitch combination).

When the user uses an input module mapped to a Control Change command,the Master Module emits a Control Change event corresponding to themapped Channel/Controller Number and the Control Value as dictated bythe input state of the module.

When the user uses an input module mapped to a Note command, the MasterModule will emit a Note On or Note Off event when appropriate (e.g.: aNote On issued when a button is depressed, Note Off when a button isreleased) corresponding to the mapped Channel/Pitch.

If the data is an HID or MIDI map from the System Controller Applicationon the computing device, the method sets the internal mapping(represented as a dynamic table in the Master Module), where each tableentry maps an HID or MIDI command to a specific Input Module statechannel, as provided via the System Desktop Application executing on thecomputing device. An example HID map: {“hid map”:[{“i”:2, “s”:[{“c”:0,“k”:30, “m”:0}]}]} sets a key press action corresponding to the letter‘a’ to the module with ID 2 and its channel 0.

If the data is image data from the computer, the method sets the screenimage. The Controller Application can send image data in the form of abitmap byte stream that the Master Module will store in memory. TheController Application can also instruct the Master Module to displayany image stored in memory on the screen.

If a layout timer signal is received, the method recursively determinesthe module layout, and sends the new module layout to the computer. TheMaster Module has an internal timer set to trigger an interrupt at aspecific period (100 ms). When this interrupt occurs, the Master willexecute layout and addressing logic.

Module Layout and Dynamic Addressing Scheme

Now referring to FIG. 8, shown is a schematic block diagram illustratinghow a Master Module may logically map a layout of interconnected InputModules.

In an embodiment, the Master Module determines the layout of all themodules in a recursive breadth-first manner and internally stores thelayout representation as an n-ary tree of variable size. Each node ofthe n-ary tree represents a module, where the node contains informationsuch as the type of module, I²C address of the module, a UniversalUnique Identifier (UUID), number of child ports, and pointers to childnodes. FIG. 8 shows a layout tree representation and FIG. 9 shows anillustration of the actual corresponding layout. The port genderconfiguration in conjunction with the address/presence lines allowsposition and orientation information of the mated modules to bedetermined, which no other conventional bus provides. The Master alsokeeps track of the assigned I²C addresses as an ordered array.

In an embodiment, the Master Module employs the following layout anddynamic addressing scheme every 100 ms:

-   -   1. The Master Module first checks its female ports for the        presence of any modules (using the presence/addressing line),        and if any are detected, the nodes are created and added to the        internal layout tree. The Master assigns the next sequential        addresses available, and consequently adds the addresses to the        Address Array.    -   2. The Master then traverses the tree in a breadth-first manner,        querying the Module defined by the current node via I2C.    -   3. The Master queries the current node and asks it to detect the        presence of any new Modules.    -   4. If the current node reports a new child present in step 3,        the Master tells the module corresponding to the current node to        assign the next sequential address available. The Master adds        this address to the address array.    -   5. The Master creates the new child node, and queries the new        module via I²C for information on type, UUID, and number of        child ports. The Master sets the appropriate pointer of the        current node to the new child node.    -   6. The Master repeats steps 2-5 until no more new children are        detected.

In an embodiment, the Master queries all the I²C addresses in theAddress Array sequentially when getting the corresponding Input Modulestates. If a module fails to respond to the query, the Master removesthe corresponding node and sub-nodes from the layout tree, and removesthe corresponding addresses from the Address Array.

Inter-Module Bus Communication

Now referring to FIG. 10, shown is a schematic block diagram of alogical bus architecture for interconnecting the Master Module to aplurality of Input Modules.

In an embodiment, the Master Module and Input Modules communicate on acommon I²C bus. The Master Module acts as the I²C master and requeststhe input states of each Input Module sequentially as it queries theaddress in its Address Array. The Master also uses the I²C bus torequest child module detection and to assign addresses during thedetection procedure.

The modules also use one-wire buses for the purposes of presencedetection and I²C address assignment. In order to establish presence,the Input Module when connected asserts the line, and the detector afterhaving detected the assertion then asserts the line. The newly connectedmodule upon detecting the second assertion goes into receive mode on theline. The line transitions into a 19200 bps 8-N-1 serial line where thedetector now transmits an I²C address and the new module receives it.Once the transmission is terminated, the new module transitions into themain state where it sets its I²C address to the one it received, andsends the input state upon the Master's request.

In an embodiment, the Master Module communicates the physical layout andassigned addresses to System Controller Application executing on thecomputing device. This allows each of the interconnected Input Modulesto also communicate with and be addressable by the System ControllerApplication through the Master Module.

The System Controller Application is adapted to interface with one ormore computer applications which require a user input, and enables theone or more computer applications to assign a control function to eachattached Input Module via the Master Module. For example, for a photoediting computer application, a plurality of Input Modules comprisingbuttons, dials and sliders may be interconnected with the Master Module,and each Input Module may be assigned to specific control functions suchas exposure, contrast, color saturation, color balance, sharpness,noise, etc.

In another embodiment, the physical layout of the Input Modules isreplicated on a display of the computing device by the System ControllerApplication to allow a user to more easily assign computer applicationfunctions to each Input Device. If one or more Input Modules arereconfigured and the physical layout of the Input Modules changes, thenew configuration will be replicated on the display to reflect thechange.

Advantageously, a computer user is now able to reconfigure a pluralityof Input Modules to their own preferences, and can assign differentcomputer application functions to different types of user inputsprovided by the Input Modules in a virtually unlimited number ofconfigurations, providing great flexibility and customization.

Thus, in an aspect, there is provided a modular system for customizinguser inputs for a computing device, comprising: a master moduleincluding a processor and a memory, and one or more electricalinterconnection points for interconnecting one or more input modules;and at least one input module providing a type of user input, and one ormore electrical interconnection points for connection to the mastermodule, or to another input module; wherein, the master module isadapted to detect a configuration of any interconnected input modules,and to enable communication between each interconnected input module andthe computing device in order to control one or more functions on thecomputing device with one or more user inputs.

In an embodiment, the master module is further adapted to detect anyinput module added to the modular system, and to detect any input moduleremoved from the modular system, such that the master module detects anew configuration of any interconnected input modules after an inputmodule has been added or removed.

In another embodiment, the master module and the input modules are sizedand shaped to provide a electrical interconnection point along at leastone side of each of module.

In another embodiment, the master module and the input modules arerectilinear, and are adapted to interconnect to another module on atleast three sides.

In another embodiment, the master module or the input modules aresubstantially square, or substantially rectangular with a footprint oftwo adjacent squares.

In another embodiment, the master module, and each input module, furtherincludes one or more fasteners for detachably interconnecting the mastermodule to the at least one input module.

In another embodiment, the one or more fasteners comprise one or moremagnets positioned with polarities oriented to allow detachableinterconnection between the master module and one or more input modules,or between input modules, in any configuration permitted by the magnetpolarities.

In another embodiment, the types of user input include one or more ofbuttons, sliders, knobs, joysticks, trackballs, touch pads, and touchscreens.

In another embodiment, the one or more electrical interconnection pointscomprise resiliently depressible pogo pins and corresponding contactpads.

In another embodiment, the master module or the at least one inputmodule further includes an output adapted to provide data or a signal.

In another embodiment, the output comprises one or more of a lightsource, a sound source, a mechanical vibration, or a display fordisplaying text or graphics.

In another embodiment, the computing device comprises one of a desktopor laptop computer, a tablet, or a mobile phone.

In another embodiment, the master module is adapted to communicate withthe computing device using one of CDC/ACM, HID, or MIDI.

In another embodiment, the one or more electrical interconnection pointsprovided on each input module establish an I2C bus connection with eachother and with the master module.

In another embodiment, each interconnected input module is adapted todetect a newly connected input module on the I2C bus and to report thenewly connected input module to the master module.

In another embodiment, the master module is adapted to assign an I2C busaddress to the newly interconnected input module, thereby to make thenewly interconnected input module addressable.

In another embodiment, the master module is further adapted tocommunicate the configuration or reconfiguration of any interconnectedinput modules and the type of user input provided by each interconnectedinput module to a system controller application executing on thecomputing device.

In another embodiment, the master module is further adapted to translatean action performed by a user input on an input module into a functionor command to be relayed by the system controller application to a userapplication.

In another embodiment, the master module is further adapted tocommunicate the configuration of the interconnected input modules to thesystem controller application, such that the system controllerapplication can logically map the configuration of the interconnectedinput modules on a graphical display for assigning each user input on aninterconnected input module to a function or command in the userapplication.

In another embodiment, the system controller application is furtheradapted to provide via the graphical display a drop down menu of userapplication functions that may be mapped to each user input on theinterconnected input modules.

It will be appreciated that various amendments and modifications may bemade to the illustrative embodiments described herein without departingfrom the scope of the invention, and that the examples provided in thepresent disclosure are not limiting. Rather, the scope of the inventionis defined by the following claims which should be given their broadestinterpretation consistent with the scope of the present disclosure.

The invention claimed is:
 1. A modular system for customizing userinputs for a computing device, comprising: a master module including aprocessor and a memory, and one or more electrical interconnectionpoints for interconnecting one or more input modules via a busconnection; and at least one input module providing a type of userinput, and one or more electrical interconnection points for connectionto the master module or to another input module via the bus connection;wherein, the master module is adapted to detect a configuration of anyinterconnected input modules, including position and orientation of eachinterconnected module, and to dynamically assign a bus address to eachof the interconnected input modules, thereby to make the interconnectedinput modules addressable and logically mappable, and to enablecommunication between each interconnected input module and the computingdevice in order to control one or more functions on the computing devicewith one or more user inputs.
 2. The modular system of claim 1, whereinthe master module is further adapted to detect any input module added tothe modular system, and to detect any input module removed from themodular system, such that the master module detects a new configurationof any interconnected input modules after an input module has been addedor removed.
 3. The modular system of claim 2, wherein the master moduleand the input modules are sized and shaped to provide an electricalinterconnection point along at least one side of each of module.
 4. Themodular system of claim 3, wherein the master module and the inputmodules are rectilinear, and are adapted to interconnect to anothermodule on at least three sides.
 5. The modular system of claim 4,wherein the master module or the input modules are substantially square,or substantially rectangular with a footprint of two adjacent squares.6. The modular system of claim 1, wherein the master module, and eachinput module, further includes one or more fasteners for detachablyinterconnecting the master module to the at least one input module. 7.The modular system of claim 6, wherein the one or more fastenerscomprise one or more magnets positioned with polarities oriented toallow detachable interconnection between the master module and one ormore input modules, or between input modules, in any configurationpermitted by the magnet polarities.
 8. The modular system of claim 1,wherein the types of user input include one or more of buttons, sliders,knobs, joysticks, trackballs, touch pads, and touch screens.
 9. Themodular system of claim 1, wherein the one or more electricalinterconnection points comprise resiliently depressible pogo pins andcorresponding contact pads.
 10. The modular system of claim 9, whereinthe modular system is further adapted to provide one or more outputs tothe one or more interconnected modules, the one or more outputscomprising a light source, a sound source, a mechanical vibration, or adisplay for displaying text or graphics.
 11. The modular system of claim1, wherein the master module or the at least one input module furtherincludes an output adapted to provide data or a signal.
 12. The modularsystem of claim 1, wherein the computing device comprises one of adesktop or laptop computer, a tablet, or a mobile phone.
 13. The modularsystem of claim 1, wherein the master module is adapted to communicatewith the computing device using one of CDC/ACM (Communications DeviceClass/Abstract Control Model), HID (Human Interface Device), or MIDI(Musical Interface Digital Interface).
 14. The modular system of claim1, wherein the bus connection is an I.sup.2C (Inter-Integrated Circuit)bus connection.
 15. The modular system of claim 14, wherein eachinterconnected input module is adapted to detect a newly connected inputmodule on the I.sup.2C bus and to report the newly connected inputmodule to the master module.
 16. The modular system of claim 15, whereinthe master module is further adapted to communicate the configuration orreconfiguration of any interconnected input modules and the type of userinput provided by each interconnected input module to a systemcontroller application executing on the computing device.
 17. Themodular system of claim 14, wherein the master module is adapted toassign an I.sup.2C bus address to the newly interconnected input module,thereby to make the newly interconnected input module dynamicallyaddressable.
 18. The modular system of claim 17, wherein the mastermodule is further adapted to translate an action performed by a userinput on an input module into a function or command to be relayed by thesystem controller application to a user application.
 19. The modularsystem of claim 18, wherein the master module is further adapted tocommunicate the configuration of the interconnected input modules to thesystem controller application, such that the system controllerapplication can logically map the configuration of the interconnectedinput modules on a graphical display for assigning each user input on aninterconnected input module to a function or command in the userapplication.
 20. The modular system of claim 19, wherein the systemcontroller application is further adapted to provide via the graphicaldisplay a drop down menu of user application functions that may bemapped to each user input on the interconnected input modules.